export default {
    install(Vue, options) {
        /**
         * 判断是否是邮箱
         * @param s
         * @returns {boolean}
         */
        Vue.prototype.tool_is_email = function (s) {
            return /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((.[a-zA-Z0-9_-]{2,3}){1,2})$/.test(s);
        };
        /**
         * 判断是否是手机号
         * @param s
         * @returns {boolean}
         */
        Vue.prototype.tool_is_mobile=function (s) {
            return /^1(3|4|5|7|8)\d{9}$/.test(s);
        };
        /**
         * 电话号码
         * @param {*} s
         */
        Vue.prototype.tool_is_phone=function (s) {
            return /^([0-9]{3,4}-)?[0-9]{7,8}$/.test(s);
        };
        /**
         * 是否填写
         * @param {*} s
         */
        Vue.prototype.tool_is_fill=function (s) {
            return s.length>length;
        };
        /**
         *是否超长
         *
         * @export
         * @param {*} s
         * @param {number} [length=40]
         * @returns
         */
        Vue.prototype.tool_is_too_long=function (s) {
            return s.length>=length;
        };
        /**
         * URL地址
         * @param {*} s
         */
        Vue.prototype.tool_is_url=function (s) {
            return /^http[s]?:\/\/.*/.test(s);
        };
        Vue.prototype.tool_is_decimal=function(s){
            return /^\d+$|^\d*\.\d+$/.test(s);

        };
        /**
         * 是否是数字
         * @param {*} s
         */
        Vue.prototype.tool_is_number=function (s) {
            if(!isNaN(s)){
                return true;
            }else{
                return false;
            }
        };
        /**
         * 判断是否为空  空为true
         * @param val
         * @returns {boolean}
         */
        Vue.prototype.tool_is_null=function (val) {
            var str = val.replace(/(^\s*)|(\s*$)/g, '');//去除空格;
            if (str == '' || str == undefined || str == null) {
                return true;//是空
            } else {
                return false;//不为空
            }
        };

        Vue.prototype.tool_is_json= function (str, pass_object) {
            if (pass_object && (Object.prototype.toString.call(str) === '[object Object]')) {
                return true;
            }
            if (!(Object.prototype.toString.call(str) === '[object String]')) {
                return false;
            }
            str = str.replace(/\s/g, '').replace(/\n|\r/, '');
            if (/^\{(.*?)\}$/.test(str)){
                return /"(.*?)":(.*?)/g.test(str);
            }
            if (/^\[(.*?)\]$/.test(str)) {
                return str.replace(/^\[/, '')
                    .replace(/\]$/, '')
                    .replace(/},{/g, '}\n{')
                    .split(/\n/)
                    .map(function (s) {
                        return this.tool_is_json(s);
                    })
                    .reduce(function (prev, curr) {
                        return !!curr;
                    });
            }
            return false;
        };

        /**
         * 是否是身份证号
         * @param {*} s
         */
        Vue.prototype.tool_is_idcard=function (s) {
            // 身份证号码为15位或者18位，15位时全为数字，18位前17位为数字，最后一位是校验位，可能为数字或字符X
            return  /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/.test(s);
        };
        /**
         * 深层次复制对象
         * @param obj
         */
        Vue.prototype.tool_cloneObj=function (obj) {
            var newObj = {};
            if (obj instanceof Array) {
                newObj = [];
            }
            for (var key in obj) {
                var val = obj[key];
                //newObj[key] = typeof val === 'object' ? arguments.callee(val) : val;
                // arguments.callee 在哪一个函数中运行，它就代表哪个函数, 一般用在匿名函数中。
                newObj[key] = typeof val === 'object' ? this.tool_cloneObj(val): val;
            }
            return newObj;
        }
       /**
        * -----------------------数据的存储相关
        * */
       //获取token
        Vue.prototype.getToken = function () {
            if (localStorage.getItem("userinfo") && localStorage.getItem("userinfo") != undefined) {
                let json_str = localStorage.getItem("userinfo");
                if (json_str == null) return '';
                let userinfo = JSON.parse(json_str || {});
                if (userinfo == null) {
                    return ''
                }
                return userinfo.token
            }
        };
        //获取所有用户的数据
        Vue.prototype.getUserInfo = function () {
            if (localStorage.getItem("userinfo") && localStorage.getItem("userinfo") != undefined) {
                let json_str = localStorage.getItem("userinfo");
                if (json_str == null) return '';
                let userinfo = JSON.parse(json_str || {});
                if (userinfo == null) {
                    return ''
                }
                return userinfo
            }
        };
        /**
         * 更新用户的数据
         * @param isMobile  true为更新手机号
         * @param data  手机号或邮箱
         * @param mobilePrefix  手机的前缀
         */
        Vue.prototype.updateMobileOrEmail = function (isMobile,data,mobilePrefix='') {
          let userInfo=  this.getUserInfo()
            if(isMobile){
                userInfo.mobile_prefix=mobilePrefix;
                userInfo.mobile=data;
            }else {
                userInfo.email=data;
            }
            this.setUserInfo(JSON.stringify(userInfo));
        };

        // 取用户账号
        Vue.prototype.getUserName = function () {
            if (localStorage.getItem("userinfo") && localStorage.getItem("userinfo") != undefined) {
                let userinfo = JSON.parse(localStorage.getItem("userinfo") || {});
                if (userinfo == null) {
                    return ''
                }
                return userinfo.username
            }
        };
        // 获取UID
        Vue.prototype.getUID = function () {
            if (localStorage.getItem("userinfo") && localStorage.getItem("userinfo") != undefined) {
                let userinfo = JSON.parse(localStorage.getItem("userinfo") || {});
                if (userinfo == null) {
                    return ''
                }
                return userinfo.uid
            } else {
                return '';
            }
        };
        //存储数据
        Vue.prototype.setUserInfo = function (data) {
            localStorage.setItem("userinfo",data);
        };
        Vue.prototype.setWebSocketToken = function (data) {
            localStorage.setItem("WebSocketToken",data);
        };
        Vue.prototype.getWebSocketToken = function () {
            let token=localStorage.getItem("WebSocketToken");
            if (token && token != undefined) {
                if (token == null) {
                    return ''
                }
                return token;
            }
        };
        //清除数据用户数据
        Vue.prototype.clearUserInfo = function () {
            localStorage.removeItem('userinfo');
            this.$router.push('/login');
        };
        //判断用户是否登录
        Vue.prototype.isLogin=function () {
            if(this.getUID()){
              //  this.$router.push('/');
                return true;
            }else {
                return false;
            }
        };

    }
}
